var express = require("express")
var User = require("./models/user")
var md5 = require("blueimp-md5")

var router = express.Router()

router.get('/', function(req, res, next){
  console.log(req.session.isLogin)
  res.render("index.html", {
    user: req.session.user
  })
})


router.get('/login', function(req, res, next){
  res.render("login.html")
})

router.post('/login', function(req, res, next){
  // 1. 获取表单提交数据
  // 2. 操作数据库
  // 3. 发送响应数据
  // console.log(req.body)
  var body = req.body

  User.findOne({
    email: body.email,
    password: md5(md5(body.password))
  }, function(err, user){
    if(err){
      // return res.status(500).json({
      //   err_code: 500,
      //   message: err.message
      // })
      return next(err)
    }
    if(!user){
      return res.status(200).json({
        err_code: 1,
        message: "用户账号或密码错误"
      })
    }

    // 用户成功登录，通过 session 记录登录状态
    req.session.user = user

    res.status(200).json({
      err_code: 0,
      message: "登录成功"
    })

  })
})


router.get('/register', function(req,res, next){
  res.render("register.html")
})

router.post('/register', function(req, res, next){
  // 1. 获取表单提交数据
  // req.body
  // 2. 操作数据库
  // 判断用户是否存在，不存在就创建
  // 3. 发送响应
  var body = req.body
  User.findOne({
    $or:[
      {
        email: body.email
      },
      {
        nickname: body.nickname
      }
    ]
    
  }, function (err, data){
    if(err){
      // return res.status(500).json({
      //   err_code: 500,
      //   message: "Internet error"
      // })
      return next(err)
    }
    if(data){
      return res.status(200).json({
        err_code: 1,
        message: "Email or nickname already existed"
      })
    }

    body.password = md5(md5(body.password))

    new User(body).save(function (err, user){
      if(err){
        // return res.status(500).json({
        //   err_code: 500,
        //   message: "Internet error"
        // })
        return next(err)
      }

      // 注册成功，使用 session 记录登录的状态
      req.session.isLogin = true
      req.session.user = user


      res.status(200).json({
        err_code: 0,
        message: "Register account sucessful"
      })
    })

    
    // res.status(200).send(JSON.stringify({
    //   success: true
    // }))
    // Express 提供了一个 json 方法
    // 该方法获取一个对象参数，直接将对象转换成字符串再发给浏览器
    
  })
  console.log(req.body)
})

router.get("/logout", function(req, res, next){
  // 清除 session ，取消登录状态
  req.session.user = null
  // 重定向到登录界面
  res.redirect("/login")

})

// router.post("/register", async function(req, res){
//   var body = req.body

//   try{
//     if( await User.findOne({email: body.email})){
//       return res.status(200).json({
//         err_code: 1,
//         message: "邮箱已存在"
//       })
//     }

//     if( await User.findOne({nickname: body.nickname})){
//       return res.status(200).json({
//         err_code: 2,
//         message: "昵称已存在"
//       })
//     }

//     body.password = md5(md5(body.password))
    
//     await new User(body).save()

//     res.status(200).json({
//       err_code: 0,
//       message: "OK"
//     })

//   }

//   catch{
//     res.status(500).json({
//       err_code: 500,
//       message: "Internet error"
//     })
//   }

// })




module.exports = router